package com.sg.dto.biz.app.req;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * @desc UpdateDifferentWorkTasksComReqDto
 * @使用场景
 */
@Data
public class UpdateDifferentWorkTasksComReqDto
        extends BaseDto
        implements Serializable {

    /**
     * 工作任务对象类型 PROJECT:项目 TASK:任务 PROBLEM:问题
     */
    @NotNull(message = "工作任务对象类型不能为空")
    @ApiModelProperty("工作任务对象类型")
    private String workTaskObjectType;

    /**
     * 工作任务对象ID
     */
    @NotNull(message = "工作任务对象ID不能为空")
    @ApiModelProperty("工作任务对象ID")
    private String workTaskObjectId;

    /**
     * 接收部门ID
     */
    @ApiModelProperty("接收部门ID")
    private String receiveSubjectId;

    /**
     * 任务进展状态 NOT_AT_THE:未开始 ONGOING:进行中 HAS_ENDED:已结束
     */
    @ApiModelProperty("任务进展状态")
    private String taskStatus;

    /**
     * 内容冗余状态 EDITING:草稿 TOBESIGN:待签收 ONGOING:进行中 FAILED:已失败 OVERDUE:逾期任务 NOT_AT_THE:未开始 UNCOMPLETED:未完成 COMPLETED:已完成 UNREPORTED:待汇报 EVA:评价中 AUDIT:审核中 EXPIRED:已逾期 SUCCESS:已成功 ENDED:已结束 UNLIMITED:不限
     */
    @ApiModelProperty("内容冗余状态")
    private String stateCode;

    /**
     * 是否完成 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否完成")
    private String isComplete;

    /**
     * 是否逾期 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否逾期")
    private String isOverdue;

    /**
     * 实际开始时间
     */
    @ApiModelProperty("实际开始时间")
    private Date actualStartTime;

    /**
     * 实际结束时间
     */
    @ApiModelProperty("实际结束时间")
    private Date actualEndTime;

    /**
     * 总时长
     */
    @ApiModelProperty("总时长")
    private Long totalLength;

    /**
     * 完成情况 AHEAD_SCHEDULE:提前完成（提前24h） NORMAL_COMPLETE:正常完成 OVERDUE_COMPLETE:逾期完成
     */
    @ApiModelProperty("完成情况")
    private String completeStatus;

    /**
     * 开始时间偏差天数
     */
    @ApiModelProperty("开始时间偏差天数")
    private Long deflectionStartDays;

    /**
     * 结束时间偏差天数
     */
    @ApiModelProperty("结束时间偏差天数")
    private Long deflectionEndDays;

    /**
     * 前端状态时间
     */
    @ApiModelProperty("前端状态时间")
    private Long deflectionTime;

    /**
     * 前端状态时间语义提示
     */
    @ApiModelProperty("前端状态时间语义提示")
    private String deflectionInfo;

    /**
     * 进度值（数值）
     */
    @ApiModelProperty("进度值（数值）")
    private Double progressValue;

}
